import http from './http.js';

/**
 * 统计相关接口
 */
const statisticsApi = {
  /**
   * 获取今日团数量统计及同比昨天增长信息
   * @returns {Promise<Object>} 统计数据对象
   */
  async getTodayTourGroupStats() {
    try {
      const result = await http.post('Mini/TourGroup/GetTodayTourGroupStats', {});
 
      return result;
    } catch (error) {
      console.error('获取今日团数量统计失败:', error);
      throw error;
    }
  },

  /**
   * 获取今日订单数量统计及同比昨天增长信息
   * @returns {Promise<Object>} 统计数据对象
   */
  async getTodayOrderStats() {
    try {
      // 使用正确的接口路径
      const result = await http.post('Mini/TourGroup/GetTodayOrderStats', {});
      return result;
    } catch (error) {
      console.error('获取今日订单数量统计失败:', error);
      throw error;
    }
  },

  /**
   * 获取今日游客人数统计及同比昨天增长信息
   * @returns {Promise<Object>} 统计数据对象
   */
  async getTodayTravelerStats() {
    try {
      // 使用正确的接口路径
      const result = await http.post('Mini/TourGroup/GetTodayTravelerStats', {});
      return result;
    } catch (error) {
      console.error('获取今日游客人数统计失败:', error);
      throw error;
    }
  },

  /**
   * 获取今日团期列表
   * @returns {Promise<Array>} 今日团期数据数组
   */
  async getTodayTourGroups() {
    try {
      const result = await http.post('Mini/TourGroup/GetTodayTourGroups', {});
      const tourGroups = result || [];
      
      // 根据新的参数格式要求，确保返回的数据字段名符合规范
      return tourGroups.map(group => ({
        id: group.Id || group.id || 0,              // 主键ID（long类型）
        groupName: group.GroupName || group.groupName || '',  // 团名
        groupCode: group.GroupCode || group.groupCode || '',  // 团号
        startDate: group.StartDate || group.startDate || '',  // 出发日期
        endDate: group.EndDate || group.endDate || '',        // 结束日期
        status: group.Status !== undefined ? group.Status : (group.status !== undefined ? group.status : 0), // 状态
        itineraryName: group.ItineraryName || group.itineraryName || '', // 行程名称
        guideName: group.GuideName || group.guideName || '',   // 导游姓名
        vehicleLicensePlate: group.VehicleLicensePlate || group.vehicleLicensePlate || '', // 车牌号码
        vehicleType: group.VehicleType || group.vehicleType || '', // 车辆类型
        driverName: group.DriverName || group.driverName || ''   ,// 司机姓名
		capacity: group.capacity || group.capacity || 0   ,// 人数
      }));
    } catch (error) {
      console.error('获取今日团期失败:', error);
      throw error;
    }
  },

  /**
   * 批量获取所有统计数据
   * @returns {Promise<Array>} 包含所有统计数据的数组
   */
  async getAllStatistics() {
    try {
      // 并行请求所有统计接口
      const [tourGroupStats, orderStats, travelerStats] = await Promise.all([
        this.getTodayTourGroupStats(),
        this.getTodayOrderStats(),
        this.getTodayTravelerStats()
      ]);
  
      // 返回格式化后的统计数据
      // 直接使用接口返回的数据，不再使用模拟值
      return [
        {
          title: '今日带团数',
          value: tourGroupStats?.todayCount || 0,
          trend: tourGroupStats?.growthCount || 0,
          type: 'team',
          progress: Math.min(100, Math.max(0, tourGroupStats?.progress || 0)),
          yesterdayCount: tourGroupStats?.yesterdayCount || 0,
          growthRate: tourGroupStats?.growthRate || 0
        },
        {
          title: '今日订单数',
          value: orderStats?.todayCount || 0,
          trend: orderStats?.growthCount || 0,
          type: 'task',
          progress: Math.min(100, Math.max(0, orderStats?.progress || 0)),
          yesterdayCount: orderStats?.yesterdayCount || 0,
          growthRate: orderStats?.growthRate || 0
        },
        {
          title: '今日游客数',
          value: travelerStats?.todayCount || 0,
          trend: travelerStats?.growthCount || 0,
          type: 'guest',
          progress: Math.min(100, Math.max(0, travelerStats?.progress || 0)),
          yesterdayCount: travelerStats?.yesterdayCount || 0,
          growthRate: travelerStats?.growthRate || 0
        }
      ];
    } catch (error) {
      console.error('批量获取统计数据失败:', error);
      throw error;
    }
  }
};

export default statisticsApi;